package com.qfjy.config.example2;

import com.qfjy.mq.QueueTask;
import org.springframework.amqp.core.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @ClassName WeatherConfig
 * @Description TODO
 * @Author guoweixin
 * @Date 2022/4/1
 * @Version 1.0
 */
@Configuration
public class WeatherConfig {

    /**
     * TODO
     *  1、定义交换机
     *  2、定义 京东/淘宝 队列
     *  3、交换机和 队列 依次进行绑定
     */

    /**
     * TODO 1、定义交换机  Fanout
     */
    @Bean
    public FanoutExchange fanoutExchange(){
        /*
          param1 name 交换机名称
         */
        return  new FanoutExchange(QueueTask.EXCHANGE_NAME_WEATHER);
    }

    /**
     * TODO 2 定义 京东和淘宝 队列
     */
    @Bean
    public Queue queueJdFanout(){
        return new Queue(QueueTask.QUEUE_NAME_JD_FANOUT_WEATHER);
    }

    @Bean
    public Queue queueTbFanout(){

        return new Queue(QueueTask.QUEUE_NAME_TB_FANOUT_WEATHER);
    }

    /**
     * TODO 3、交换机和 队列 依次进行绑定
     */

    //京东和交换机 绑定    Queue queueJdFanout
    // IOC默认关心的是类型。
    @Bean
    public Binding bindFanoutJd(Queue queueJdFanout,FanoutExchange fanoutExchange){
        return BindingBuilder.bind(queueJdFanout).to(fanoutExchange);
    }
    //淘宝和交换机 绑定
    @Bean
    public Binding bindFanoutTb(Queue queueTbFanout,FanoutExchange fanoutExchange){
        return  BindingBuilder.bind(queueTbFanout).to(fanoutExchange);
    }

    /**
     * @Bean 所有过程 都是放入IOC容器。
     * 所有取对象都是在IOC容器中取。
     */

}
